#pragma once

#include <string>
#include <chrono>

/**
 * @brief 会话信息类
 * 
 * 该类用于存储和管理会话的基本信息，包括：
 * - 会话令牌
 * - 用户ID
 * - 创建时间
 * - 过期时间
 */
class Session {
public:
    /**
     * @brief 构造函数
     * @param token 会话令牌
     * @param userId 用户ID
     * @param expirySeconds 过期时间（秒）
     */
    Session(const std::string& token, int userId, int expirySeconds);

    /**
     * @brief 获取会话令牌
     * @return std::string 会话令牌
     */
    std::string getToken() const;

    /**
     * @brief 获取用户ID
     * @return int 用户ID
     */
    int getUserId() const;

    /**
     * @brief 获取创建时间
     * @return std::chrono::system_clock::time_point 创建时间
     */
    std::chrono::system_clock::time_point getCreateTime() const;

    /**
     * @brief 获取过期时间
     * @return std::chrono::system_clock::time_point 过期时间
     */
    std::chrono::system_clock::time_point getExpiryTime() const;

    /**
     * @brief 检查会话是否已过期
     * @return bool 如果会话已过期返回true，否则返回false
     */
    bool isExpired() const;

private:
    std::string token_;  // 会话令牌
    int userId_;         // 用户ID
    std::chrono::system_clock::time_point createTime_;  // 创建时间
    std::chrono::system_clock::time_point expiryTime_;  // 过期时间
}; 